angular.module('eYe')
	.controller('StatistiquesController', function($scope,$routeParams,DataBase,safeApply,Connexion) {
		
		$.when(
			getStatistiquesByUser(DataBase.BD_Donnees_Utilisateur,DataBase.BD_Themes_Qcms,utilisateurActuel.id),
			getNbStatistiquesByUserAndDate(DataBase.BD_Donnees_Utilisateur,utilisateurActuel.id)
		).then(function(tabStatsGenerales,tabStatsParDate){
			
			$scope.nbQcmDifferentsJoues = tabStatsGenerales.length;

			/* Graphique : nb QCM joués par mois sur 1 an */
			var tabMois = ['Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Aout','Septembre','Octobre','Novembre','Décembre'];
			
			var donneesStatsParDate = [];
			var tabLibelleMois = [];

			var lastYear = new Date();
			lastYear.setFullYear(lastYear.getFullYear() -1);

			var dateActuelle = new Date();
			
			$scope.premiereDate = ((lastYear.getMonth()+2)%12) +'/'+ lastYear.getFullYear();
			$scope.derniereDate = (dateActuelle.getMonth()+1) +'/'+ dateActuelle.getFullYear();

			var mois = dateActuelle.getMonth();
			for(i=11;i>=0;i--){
				tabLibelleMois[i] = tabMois[mois];
				donneesStatsParDate[i] = tabStatsParDate[mois];
				mois--;
				if(mois < 0){
					mois = 11;
				}
			}

			var ctx_statsParDate = $("#stats_par_date").get(0).getContext("2d");
			
			var data = {
							labels : tabLibelleMois,
							datasets : [
								{
									fillColor : "rgba(220,220,220,0.5)",
									strokeColor : "rgba(220,220,220,1)",
									data : donneesStatsParDate,
									title : 'Nombre de QCM joués par mois'
								}
							]
						};

			var statsParDate = new Chart(ctx_statsParDate,$('#graphique_stats_par_date')).Bar(data);
			legend(document.getElementById('stats_par_date_legend'), data);

			/* Graphique : Pourcentage du nombre de QCM au dessus de la moyenne */

			var cptAuDessusMoyenne = 0;
			var cptEnDessousMoyenne = 0;

			var nbBonnesReponses = 0;
			var nbMauvaisesReponses = 0;

			var nbQcmJoues = 0;

			var qcmAnnees = [];
			var cptTemp = 0;
			var oldAnnee = -1;

			for(i=0;i<tabStatsGenerales.length;i++){
				tabStatsGenerales[i].liste_notes.forEach(function(note){
					
					nbQcmJoues++;

					if((eval(note.note)*100) >= 50){
						cptAuDessusMoyenne ++;
					}
					else{
						cptEnDessousMoyenne ++;
					}

					var infoNote = note.note.split('/');
					nbBonnesReponses = nbBonnesReponses + parseInt(infoNote[0]);
					nbMauvaisesReponses = nbMauvaisesReponses + (parseInt(infoNote[1]) - parseInt(infoNote[0]));

					var dateQcm = new Date();
					dateQcm.setTime(note.date);

					if((oldAnnee != -1) && (oldAnnee != dateQcm.getFullYear())){
						qcmAnnees.push({annee:oldAnnee,nb_qcm:cptTemp});
						oldAnnee = dateQcm.getFullYear();
						cptTemp = 0;
					}
					else if(oldAnnee == -1){
						oldAnnee = dateQcm.getFullYear();
					}

					cptTemp++;
				});
			}

			if(cptTemp > 0){
				qcmAnnees.push({annee:oldAnnee,nb_qcm:cptTemp});
			}

			$scope.nbQcmJoues = nbQcmJoues;
			$scope.nbQcmParAnnees = qcmAnnees;

			$scope.cptAuDessusMoyenne = cptAuDessusMoyenne;
			$scope.cptEnDessousMoyenne = cptEnDessousMoyenne;
			$scope.nbBonnesReponses = nbBonnesReponses;
			$scope.nbMauvaisesReponses = nbMauvaisesReponses;

			var ctx_statsPourcentageReussiteQcm = $("#stats_pourcentage_reussite_qcm").get(0).getContext("2d");

			var data = [
				{
					value : cptAuDessusMoyenne,
					color : '#96CA2D',
					title : (Math.round(((cptAuDessusMoyenne/nbQcmJoues)*100)*100)/100)+'% de QCM supérieur ou égale à la moyenne'
				},
				{
					value : cptEnDessousMoyenne,
					color : '#B9121B',
					title : (Math.round(((cptEnDessousMoyenne/nbQcmJoues)*100)*100)/100)+'% de QCM inférieur à la moyenne'
				}
			];

			var statsPourcentageReussiteQcm = new Chart(ctx_statsPourcentageReussiteQcm,$('#graphique_stats_pourcentage_reussite_qcm')).Pie(data);
			legend(document.getElementById('stats_pourcentage_reussite_qcm_legend'), data);

			/* Graphique : Pourcentage du nombre de bonnes réponses */

			var ctx_statsPourcentageReussiteReponse = $("#stats_pourcentage_reussite_reponse").get(0).getContext("2d");

			var data = [
				{
					value : nbBonnesReponses,
					color : '#96CA2D',
					title : (Math.round(((nbBonnesReponses/(nbBonnesReponses+nbMauvaisesReponses))*100)*100)/100)+'% de bonnes réponses'
				},
				{
					value : nbMauvaisesReponses,
					color : '#B9121B',
					title : (Math.round(((nbMauvaisesReponses/(nbBonnesReponses+nbMauvaisesReponses))*100)*100)/100)+'% de mauvaises réponses'
				}
			];

			var statsPourcentageReussiteReponse = new Chart(ctx_statsPourcentageReussiteReponse,$('#graphique_stats_pourcentage_reussite_reponse')).Pie(data);
			legend(document.getElementById('stats_pourcentage_reussite_reponse_legend'), data);
			
			$scope.historiqueQcm = tabStatsGenerales;

			safeApply($scope);
			Connexion.cacherCacheConnexion();
		});
	
		

		$scope.afficherGraphique = function(graphique) {
			$('#'+graphique).parent().parent().find('.details_graphique').slideUp(function(){
				$('#'+graphique).parent().slideDown();
			});			
		};

		$scope.afficherDetails = function(graphique) {
			$('#'+graphique).parent().slideUp(function(){
				$('#'+graphique).parent().parent().find('.details_graphique').slideDown();
			});			
		};

		$scope.afficherDetailsHistorique = function(id) {
			if($('#details_historique_'+id).css('display') == 'none'){
				$('#details_historique_'+id).slideDown();
			}
			else{
				$('#details_historique_'+id).slideUp();
			}
		};

	});